package user

class TutorController extends AuthController {

    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

    def index = {
        redirect(controller: "users")
    }

    def create = {
		if (hasPermission()) {
			def tutorInstance = new Tutor()
			tutorInstance.properties = params
			return [tutorInstance: tutorInstance]
		} else {
			flash.message = "Você não está autorizado a acessar a página requisitada anteriormente."
			redirect(controller:"users", action: "list")
		}
    }

    def save = {
    	if (hasPermission()) {
	    	def tutorInstance = new Tutor(params)
	        if (tutorInstance.validate()) {
	        	tutorInstance.isAdmin = true
	        	tutorInstance.password = tutorInstance.password.encodeAsHash()
				tutorInstance.save(flush: true)
	            flash.message = "${message(code: 'default.created.message', args: [message(code: 'tutor.label', default: 'Tutor'), tutorInstance.id])}"
	            redirect(action: "show", id: tutorInstance.id)
	        }
	        else {
	            render(view: "create", model: [tutorInstance: tutorInstance])
	        }
    	} else {
    		flash.message = "Você não está autorizado a acessar a página requisitada anteriormente."
    		redirect(controller:"users", action: "list")
    	}
    }

    def show = {
    	def tutorInstance = userService.getTutor()
    	if (!tutorInstance) {
            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'tutor.label', default: 'Tutor'), params.id])}"
            redirect(controller:"users", action: "list")
        }
        else {
            [tutorInstance: tutorInstance]
        }
    }

    def edit = {
        if (hasPermission()) {
	    	def tutorInstance = Tutor.get(params.id)
	        if (!tutorInstance) {
	            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'tutor.label', default: 'Tutor'), params.id])}"
	            redirect(controller:"users", action: "list")
	        }
	        else {
	            return [tutorInstance: tutorInstance]
	        }
        } else {
        	flash.message = "Você não está autorizado a acessar a página requisitada anteriormente."
        	redirect(controller:"users", action: "list")
        }
    }

    def update = {
    	if (hasPermission()) {
	    	def tutorInstance = Tutor.get(params.id)
	        if (tutorInstance) {
	            if (params.version) {
	                def version = params.version.toLong()
	                if (tutorInstance.version > version) {
	                    tutorInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'tutor.label', default: 'Tutor')] as Object[], "Another user has updated this Tutor while you were editing")
	                    render(view: "edit", model: [tutorInstance: tutorInstance])
	                    return
	                }
	            }
	            tutorInstance.properties = params
	            if (!tutorInstance.hasErrors() && tutorInstance.save(flush: true)) {
	            	tutorInstance.password = tutorInstance.password.encodeAsHash()
	                flash.message = "${message(code: 'default.updated.message', args: [message(code: 'tutor.label', default: 'Tutor'), tutorInstance.id])}"
	                redirect(action: "show", id: tutorInstance.id)
	            }
	            else {
	                render(view: "edit", model: [tutorInstance: tutorInstance])
	            }
	        }
	        else {
	            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'tutor.label', default: 'Tutor'), params.id])}"
	            redirect(controller:"users", action: "list")
	        }
    	} else {
    		flash.message = "Você não está autorizado a acessar a página requisitada anteriormente."
    		redirect(controller:"users", action: "list")
    	}
    }

    def delete = {
        if (hasPermission()) {
	    	def tutorInstance = Tutor.get(params.id)
	        if (tutorInstance) {
	            try {
	                tutorInstance.delete(flush: true)
	                flash.message = "${message(code: 'default.deleted.message', args: [message(code: 'tutor.label', default: 'Tutor'), params.id])}"
	                redirect(controller:"users", action: "list")
	            }
	            catch (org.springframework.dao.DataIntegrityViolationException e) {
	                flash.message = "${message(code: 'default.not.deleted.message', args: [message(code: 'tutor.label', default: 'Tutor'), params.id])}"
	                redirect(action: "show", id: params.id)
	            }
	        }
	        else {
	            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'tutor.label', default: 'Tutor'), params.id])}"
	            redirect(controller:"users", action: "list")
	        }
        } else {
        	flash.message = "Você não está autorizado a acessar a página requisitada anteriormente."
    		redirect(controller:"users", action: "list")
        }
    }
}
